Rust 模块
阐述
每个 Rust 包都是一个模块树:最顶层的模块叫 crate, 然后在 src/lib.rs 或 src/main.rs 中定义 mod xxx 即为各种子模块。
模块的路径分为绝对路径或相对路径:
- 绝对路径为
crate::开头 - 相对路径为从当前模块开始
super:父模块self:子模块(大多数情况可以省略)
在模块内部,子模块和各种项都是默认私有的,如果需要外部使用,就要声明为 pub。
模块和文件的对应关系
在文件中声明 mod xxx; 就会从和该模块同名的文件中加载模块,我们可以认为这模块的定义还是在 src/lib.rs 中。
实例
包的树形结构类似于:
crate
└── front_of_house
├── hosting
│ ├── add_to_waitlist
│ └── seat_at_table
└── serving
├── take_order
├── serve_order
└── take_payment